• 闲置吃灰小鸡看到 user CPU 占用都是 0,而 systemd 的时间占用了 99%。是不是感觉很心疼?
  • 由于商家各种(线路 / 稳定性 /sla/ 卡顿等等)问题,只能吃灰便宜商家,感觉很亏?

之前(去年)还有帖子还有用 python 计算 π 来消耗 cpu 时间的,然后不会写,算出来是错的。

使用 python 计算 π 来消耗 cpu 时间毫无数学意义,π 在数学上已经精确比这个计算的高得多,更何况 x86 cpu 的浮点数只能精确到 8 个浮点寄存器组成的浮点寄存器栈精度,而 x64 也只能到达 fpu16 的浮点精度,而普通 cpu 向量寄存器 (XMM,YMM) 也只能精确到 14 或者 15 级。对于达到千万级的精确度来说,基本不可能。

不少朋友使用dd if=/dev/zero of=/dev/null,来消耗 cpu 时间,(锻炼)。然而这种 cpu 时间的消耗毫科学价值,小鸡的卑微的生命又在碌碌无为中虚度了。

这种无意义的消耗甚至会被某些厂抓辫子

一个吃灰小鸡的剩余寿命应该如何度过?

一个吃灰小鸡最宝贵的东西是剩余生命。

生命剩余对于每个吃灰鸡来说只有一次。

一个吃灰鸡的生命应该是这样度过的:当它回首往事时,不因虚度光阴而悔恨,也不因碌碌无为而羞愧。

这样,在它到期的时候,能够自豪的宣布:“我把整个的时间和精力,都献给了数学上最伟大的事业——为验证千古难题而斗争。

 

进入正题

写了一个科学计算程序,精度高达: 一千八百四十四 六千七百四十四 零七百三十七 亿零九百五十五 一千六 五(18446744073709551615)。用于验证 Goldbach Conjecture(哥德巴赫猜想)。

该程序具有一下特点:

  • 性能强悍:验证程序使用 C 语言编写,计算过程能选择后台运行,不用手动挂后台。
  • 简便操作:简洁明了的 ctl 命令,方便用户操作和查询结果。
  • 状态记录:可以所有 ctl 命令查询后台计算的结果,分析程序的运行情况。
  • CPU 限制:能够限制 CPU 的使用大小,确保系统平稳运行。
  • 科学之光:发挥计算机真正的作用。如果你验证成功了,你就是下一个陈景润。解决数学上的千古难题,成为一代伟人。

程序 完全开源,可以控制后台进程的随时暂停,继续。不用杀掉程序。可以很方便控制。解决科学计算的烦恼。

关键是程序计算的结果是有意义的,cpu 的时间没有白白牺牲。还能和老板对线:“什么?你不准用户进行科学计算与学习,你 tos 写了吗?。没写!,还不准。啊,你就是阻碍科学发展的罪人!”吃灰小鸡终极解决方案,为解决数学上最伟大的猜想斗争。

项目地址

开源项目 https://github.com/no-passwd/GoldBachCtl 代码完全公开。

当然也可以用于龟壳的锻炼

  • 1. 项目安装编译
wget https://github.com/no-passwd/GoldBachCtl/archive/refs/heads/main.zip
unzip main.zip
cd GoldBachCtl-main
gcc GoldBachCtl.c -o GoldBachCtl

然后就可以使用了

./GoldBachCtl start #默认参数启动,后台运行,占用 100% CPU

./GoldBachCtl status #查看科学计算状态
  • 2. 当然也可以限制 cpu 为 20%
cpulimit --limit 20 -- ./GoldBachCtl start

这个功能依赖 cpulimit,可以用 apt 安装

通用也可以使用

./GoldBachCtl status #查看科学计算状态

其他命令

  • 1. 暂停命令

程序暂停后程序不会终止, 只是停止使用 CPU,程序还在后台,之后可以恢复继续运算。

./GoldBachCtl suspend

暂停后可使用以下命令恢复

./GoldBachCtl resume
  • 2. 停止后台程序命令。程序放弃所有数据永久退出。
./GoldBachCtl stop

其他的可以详见项目。程序的 cpu 控制也很好。

其他

对于国内大厂,如:阿里云,腾讯云,华为云等等的大厂。这些吃灰的小鸡可以长时间跑满 cpu,你们明白什么意思吧。
可以直接 ./GoldBachCtl start 启动
如果发现 cpu 长期占用,问就是在研究数学,搞科学计算。tos 也没说不能用云服务器搞研究数学的事啊。

而且这个程序也确实是在科学计算,详情看源码。

对于国外限制 cpu 使用的,使用 cpu 限制模式运行cpulimit --limit 20 -- ./GoldBachCtl start。这个限制 20%,应该大多数场景都够用了。可以自己调整的。

cpulimit --limit 50 -- ./GoldBachCtl start 限制 50%

附:程序没有写竞争锁,你应该 ./GoldBachCtl stop 后停止后台计算才 ./GoldBachCtl start 重新启动。只能启动一个后台程序。多个后台进程会竞争的,导致计算的错误。

高级模式

使用 ./GoldBachCtl config 打开调试模式,并且甚至一个较小的上限如:10000(默认为 18446744073709551418)。然后使用 ./GoldBachCtl start 启动程序,你就能直观的看到哥德巴赫猜想的计算过程,类似如下的结果:

9848 = 19 + 9829
9850 = 11 + 9839
9852 = 13 + 9839
9854 = 3 + 9851
9856 = 5 + 9851
9858 = 7 + 9851
9860 = 3 + 9857
9862 = 3 + 9859
9864 = 5 + 9859
9866 = 7 + 9859
9868 = 11 + 9857
9870 = 11 + 9859
9872 = 13 + 9859
9874 = 3 + 9871
9876 = 5 + 9871
9878 = 7 + 9871
9880 = 23 + 9857
9882 = 11 + 9871
9884 = 13 + 9871
9886 = 3 + 9883
9888 = 5 + 9883
9890 = 3 + 9887
9892 = 5 + 9887
9894 = 7 + 9887
9896 = 13 + 9883
9898 = 11 + 9887
9900 = 13 + 9887
9902 = 19 + 9883
9904 = 3 + 9901
9906 = 5 + 9901
9908 = 7 + 9901
9910 = 3 + 9907
9912 = 5 + 9907
9914 = 7 + 9907
9916 = 29 + 9887
9918 = 11 + 9907
9920 = 13 + 9907
9922 = 71 + 9851
9924 = 17 + 9907
9926 = 3 + 9923
9928 = 5 + 9923
9930 = 7 + 9923
9932 = 3 + 9929
9934 = 3 + 9931
9936 = 5 + 9931
9938 = 7 + 9931
9940 = 11 + 9929
9942 = 11 + 9931
9944 = 3 + 9941
9946 = 5 + 9941
9948 = 7 + 9941
9950 = 19 + 9931
9952 = 3 + 9949
9954 = 5 + 9949
9956 = 7 + 9949
9958 = 17 + 9941
9960 = 11 + 9949
9962 = 13 + 9949
9964 = 23 + 9941
9966 = 17 + 9949
9968 = 19 + 9949
9970 = 3 + 9967
9972 = 5 + 9967
9974 = 7 + 9967
9976 = 3 + 9973
9978 = 5 + 9973
9980 = 7 + 9973
9982 = 41 + 9941
9984 = 11 + 9973
9986 = 13 + 9973
9988 = 47 + 9941
9990 = 17 + 9973
9992 = 19 + 9973
9994 = 53 + 9941
9996 = 23 + 9973
9998 = 31 + 9967
10000 = 59 + 9941

你会看到这些数都能被质数分解。

后记

这个程序计算彻底完成的话量挺大的,我跑一个下午都没跑出来。

第一个跑出来的,说不定就是解决哥德巴赫猜想的人,千古伟人,走上人生巅峰。。。说不定呢。

对科学计算没兴趣的,也可以作为锻炼 vps 的新方式。往 cron 里面写入./GoldBachCtl start./GoldBachCtl stop,可以实现自动开启和关闭计算。

当然 suspend 与 resume 也行。与 start、stop 的区别是会驻留后台。

在干什么,别问,问到就是在研究数学。